<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Giveda® Embedded Midware: Giveda®嵌入式中间件是一个高度可裁剪的、重量级的、嵌入式软件开发平台，并且，它为开发者提供了类似Qt的API。</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">Giveda® Embedded Midware
   &#160;<span id="projectnumber">1.2.0</span>
   </div>
   <div id="projectbrief">本文档受《版权法》、《版权公约》保护。深圳技达®版权所有</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>首页</span></a></li>
      <li><a href="namespaces.html"><span>命名空间</span></a></li>
      <li><a href="annotated.html"><span>类</span></a></li>
      <li><a href="files.html"><span>文件</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>页</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Giveda®嵌入式中间件是一个高度可裁剪的、重量级的、嵌入式软件开发平台，并且，它为开发者提供了类似Qt的API。 </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="bg_brief_sect"></a>
背景与简介</h1>
<p>Qt是欧洲人创始的一个优秀的c++开发框架，社区庞大，资源丰富；但Qt太重量级了（Qt需要很多的RAM和ROM）。我很欣赏Qt的优雅，她提供的API非常直观、符合工程师的直觉、简单易用。在汲取了Qt精华的基础上，我做了“Giveda®嵌入式中间件”这个产品，它为开发者提供了类似Qt的API；它不仅仅是一个图形库，它还为你提供了非常友好易用的、人性化的tcp/udp/bluetooth方面的API接口，它是一个适用于MCU开发的重量级软件开发平台。为了更好适用于MCU开发，Giveda®嵌入式中间件包含了一个非常优秀的工程裁剪和配置系统，支持精确裁剪。<br/>
<br/>
Qt最早诞生在桌面领域，获得了很大成功，虽然Qt没能利用好自己的优势、在移动端操作系统的竞争中落败了，但时至今日Qt都依然是开发跨平台桌面应用的最佳选择。<br/>
我希望“Giveda®嵌入式中间件”能够像Qt一样成为一个别具一格的产品。我谨以此产品向Qt致敬，致敬Qt为世界做出的杰出贡献。<br/>
 </p>
<dl class="section author"><dt>作者</dt><dd>明心，2008年软考排名全国前50的嵌入式系统设计师； <br/>
2015年获得深圳科创委资助； <br/>
2016年中国创新创业大赛电子信息行业全国总决赛入围者； <br/>
2018年获得宝安区科技局给予的“创客团队”资助; <br/>
GOSP项目作者； 2020年，GOSP成为码云GVP项目; <br/>
联系方式：lei@giveda.com </dd></dl>
<dl class="section version"><dt>版本</dt><dd>1.2.0 </dd></dl>
<dl class="section date"><dt>日期</dt><dd>开始于2014, 2014 ~ 2019 <pre>
<br/>
</pre> </dd></dl>
<h1><a class="anchor" id="os_co_sect"></a>
开源协作模型</h1>
<p>在 本项目中，参与者被划分为如下角色： <br/>
 *) 会员：凡为本项目提供资源支持和/或人力支持的个人或实体，皆为本项目会员。 <br/>
 *) 常务理事：负责项目的演进、整体目标、组织架构、日常事务。常务理事暂由发起人担任，随着项目发展，要吸收其他会员共同作为常务理事。 <br/>
 *) 普通参与者：除了会员和常务理事外的其他参与者，皆为普通参与者。 <br/>
 <br/>
 会员可获得如下收益： <br/>
 *) 授权许可费的免除或优惠。 <br/>
 *) 深度参与本项目开发过程，缩短自身产品的开发周期。 <br/>
 *) 人才培养、社区荣誉。 <br/>
 *) 会员间的知识产权共享。 <br/>
 *) 本项目的知识产权归全体会员共有，会员根据自身对项目的不同贡献而享有不等比例的产权。 <br/>
 <br/>
</p>
<h1><a class="anchor" id="license_sect"></a>
授权许可协议（举报可得重金奖励）</h1>
<p>本协议适用于未被列入《exceptions/black list》的普通参与者，被列入《exceptions/black list》的个人和实体不适用本协议。 <br/>
 对于那些不涉及任何商业目的或商业行为的个人学习用途，在没有分发的情况下，使用者遵守 GNU AGPL v3.0 即可。 <br/>
 如果涉及任何商业行为或商业目的，那么大家在商言商，采用如下商业许可协议，以保护开源生态中各方的合法权益： <br/>
 *) 这是一个开源软件，我们希望它有用，但不提供质量保证（哪怕是隐含的或显而易见的质量保证）。虽然不提供质量保证，但并不意味着你能利用此点去侵害我们的商誉；如果需要质量保证，你可以购买商业版本。作为著作权人（以下简称我们），我们已经尽到了告知义务。一旦发现有人侵犯或者试图侵犯我们商誉，我们必将利用行政和法律手段死磕到底。 <br/>
 *) 除了法律允许免费使用的情形，任何用到本软件全部或部分代码的行为，都需要向我们付费购买许可；禁止未经许可将本软件全部或部分翻译成其它编程语言；分发权不能免费获得，禁止在未经许可的情况下以任何形式（包括但不限于源码形式、二进制形式等）私下或公开向别人分发本软件全部或部分代码。 <br/>
 *) 除非交易双方在《许可合同》中另有约定，否则的话，对本软件的任何修改、任何基于本软件全部或部分代码的衍生品、任何基于本软件全部或部分代码开发得到的作品、（通过任何形式）引用了本软件全部或部分代码的作品等都需要及时向我们定向开源，并同时向我们授权，允许我们以此相同协议对外公开以上软件代码和/或作品，允许我们自由使用以上软件代码和/或作品，允许我们将其授权给我们的客户进行自由使用。基于我们并不知道是谁在使用本开源软件，为了保护你的权益，你应当及时与我方商谈、签订《许可合同》。及时主动联系我方商谈签订《许可合同》是你的义务。 <br/>
 <b>*) 商业许可实行按年对公司（老板）收费。主动联系我们并付费的价格为市场价格。被人举报的被动付费价格为惩罚性价格（市场价格的10倍）。举报情形包括但不限于：违反本授权协议等。</b> <br/>
 <b>*) 举报者可获得不低于成交额30%的现金奖励。</b> <br/>
 *) 中国的出口法律和法规适用于我们的发行版，并且随着产品和技术再出口到其它地区依旧保持有效。我们保留禁止任一用户使用以上开源软件的权利。 <br/>
 *) 解释权归我方所有。因你方违反本协议造成我方损失的，你方负完全责任。 <br/>
 <b>只有完全同意以上协议，你才可以使用本软件。 <br/>
 如果不同意以上协议，不要使用本软件。</b> <br/>
</p>
<pre></pre><pre></pre> <h1><a class="anchor" id="hello_world_sect"></a>
Hello World示例</h1>
<p>就从一个最简单的hello world示例开始 </p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="hello__world_8cpp.html" title="作为入门，我们来看一个简单的“对话框”示例。 对话框在英文中往往被叫做Dialog、MessageBox、又或者MsgBox。 示例代码如下： ">hello_world.cpp</a> <pre></pre></dd></dl>
<h1><a class="anchor" id="tese_sect"></a>
特色介绍——支持远程显示</h1>
<pre>利用“Giveda®嵌入式中间件”提供的远程桌面功能，您可以在手机上查看和操作MCU设备的图形界面（远程桌面）。
换句话说，使用“Giveda®嵌入式中间件”的远程桌面功能，您可以将MCU设备的图形界面显示到手机、平板、或PC等任何有屏的设备上。
需要GUI界面、但却没有硬件显示屏的设备，可以使用智能手机作为该设备的显示屏。
利用“Giveda®嵌入式中间件”提供的远程桌面功能，可以实现一个统一的手机APP能够操控不同厂商的不同设备。
</p>
<pre>
</pre> </pre><h1><a class="anchor" id="try_sect"></a>
开发环境搭建</h1>
<pre>首先，你需要从如下网址下载 SDK: <a href="http://giveda.com/get-giveda-gui.php">http://giveda.com/get-giveda-gui.php</a>
SDK是一个压缩包，比如 Giveda_Remote_GUI_v1.0.tar.gz。
在全英文路径中解压上述压缩包，得到Giveda_Remote_GUI_v1.0目录。请确保Giveda_Remote_GUI_v1.0目录的绝对路径中没有任何中文字符，<br/>
比如/home/lei/下载/Giveda_Remote_GUI_v1.0/这样的带有中文的路径是不允许的，带中文的路径会导致编译出错。<br/>
如果编译出错，请检查编译路径中是不是存在非英文字符。</pre><pre>进入Giveda_Remote_GUI_v1.0/code目录，该目录的结构如下：
|
├── code                                code里面包含了所有的代码
├── README.txt                    Read Me 帮助文档
└── remote-client                 远程控制客户端</pre><pre>进入Giveda_Remote_GUI_v1.0/code目录，该目录的结构如下：
├
├── doc                                  开发手册
├── example                          example
└── pics                                  lib pic dir（给远程控制客户端传入这个路径）</pre><pre>进入Giveda_Remote_GUI_v1.0/code/example目录，该目录的结构如下：
|
├── gCtrlButton                      窗体和按钮
├── gCtrlIconView                  图标视图、按钮
├── gCtrlItem                          文字标签、图片标签、滚动字幕、按钮
├── gCtrlLineEdit                    输入框、input box、按钮
├── gCtrlListBox                     列表视图、按钮
├── gCtrlMsgBox                    对话框、窗体、按钮
├── gCtrlProgressBar             进度条、按钮
├── gCtrlRadioButton             单选按钮
└── hello_world                      hello_world（最简单的示例程序）</pre><pre>你可以进入以上任一目录然后进行编译。比如你想编译gCtrlButton，就顺序执行如下命令：
cd  gCtrlButton
cmake ./                                    #每次你修改替换了图片后，都需要再次执行cmake
make
./gCtrlButton                             #执行编译得到的可执行软件</pre><pre>上述程序的输出如下：
#该程序作为远程控制的服务端，已经打开了本机的36000端口，等待远程控制客户端连接
<a class="el" href="namespace_giveda.html">Giveda</a>: listening on tcp/udp port[36000]
#当前还没有远程控制客户端连接
<a class="el" href="namespace_giveda.html">Giveda</a> warning: [paintEvent(), line 167] there is no screen[-1]
#当使用远程控制客户端连接时，需要用到这个设备型号。
device model=[gCtrlButton]</pre><pre>SDK里面有一个使用Qt4编写的远程控制客户端remote-client.qt4，它的用法如下：
usage: ./remote-client.qt4 lib_pic_dir app_pic_dir
其中，lib_pic_dir是固定的，统一为Giveda_Remote_GUI_v1.0/pics；对于不同的app，app_pic_dir是不同的，
app_pic_dir的格式如下：Giveda_Remote_GUI_v1.0/code/example/设备型号/pics/
上述gCtrlButton远程控制服务端所对应的app_pic_dir为Giveda_Remote_GUI_v1.0/code/example/gCtrlButton/pics/</pre><pre>现在，我们来启动远程控制客户端，连接上述gCtrlButton远程控制服务端。执行如下命令：
cd Giveda_Remote_GUI_v1.0/remote-client/
./remote-client.qt4  ../code/pics/  ../code/example/gCtrlButton/pics/</pre><pre>远程控制客户端remote-client.qt4的界面如下：
</p>
<div class="image">
<img src="../remote-client.qt4_screenshot.jpg"  alt="远程控制客户端remote-client.qt4的界面"/>
</div>
<p>
输入远程控制服务端的IP地址和端口号，点击连接，即可进行远程控制。</pre><pre>好了，简易的指导就到这里了，现在去开始你自己的尝试吧！
如果出现连接出错提示，请检查IP地址和端口号是否正确。如果界面显示异常，请检查你传递给remote-client.qt4的lib_pic_dir和app_pic_dir</pre><pre>以上SDK中使用到了Qt-4.8.6。向Qt致敬！
以上SDK在ubuntu 14.04 x86_64下测试通过，基于以上SDK开发出来的应用软件具有高度的可移植性。
你尽可在linux下完成产品的开发和调试工作（linux下面做开发还是很方便高效的），深圳技达®保证让你能够一次开发，到处运行。
如果开发遇到问题、或者需要其它软硬件平台的版本，请联系lei@giveda.com</pre><pre><pre></pre></pre><pre><pre></pre> </pre><h1><a class="anchor" id="modules_catogery_sect"></a>
功能模块指引</h1>
<pre>Giveda®嵌入式中间件为开发者提供了类似Qt的API，具体的，包括如下功能模块：
</pre><h2><a class="anchor" id="modules_subsect_gui"></a>
窗口及GUI控件</h2>
<pre>Giveda®嵌入式中间件包含了所有常用的GUI控件，并可以快速组装新控件。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_ctrl_button.html" title="按钮 ">GCtrlButton</a>  <a class="el" href="class_g_ctrl_form.html" title="窗体、窗口、window；GUI软件由若干个窗口组成， GCtrlForm 类代表窗口；窗口可以包含任意数目的控件 GMItem ；如果没有窗口，控件将无法显示。 ...">GCtrlForm</a> <a class="el" href="class_g_ctrl_line_edit.html" title="输入框、input box ">GCtrlLineEdit</a>  <a class="el" href="class_g_ctrl_list_box.html" title="GCtrlListBox 类提供了类似windows资源管理器中的列表视图；列表视图可以包含任意数目的列表项 GCtrlListBoxItem ；如果没有列表视图，列表项将无法显示。 ...">GCtrlListBox</a>  <a class="el" href="class_g_ctrl_msg_box.html" title="对话框 ">GCtrlMsgBox</a>  <a class="el" href="class_g_ctrl_progress_bar.html" title="进度条 GCtrlProgressBar 会主动把自己加入 GCtrlForm 。 如果你需要拼装自定义的UI控件，请使用 GMProgressBar 。 通常情况下，你并不需要拼装自定义的UI控件，所...">GCtrlProgressBar</a> <br/>
 <a class="el" href="class_g_ctrl_radio_button_group.html">GCtrlRadioButtonGroup</a>  <a class="el" href="class_g_ctrl_image.html" title="图片元素（能够自动缩放到用户所设置的尺寸大小）； GCtrlImage 与 GMImage 的区别在于： GCtrlImage 会主动将自己添加到 GCtrlForm 中，而 GMImage 则没有；因...">GCtrlImage</a>  <a class="el" href="class_g_ctrl_pixmap.html" title="图片元素（原样显示，不会自动缩放到用户所设置的尺寸大小）； GCtrlPixmap 与 GMPixmap 的区别在于： GCtrlPixmap 会主动将自己添加到 GCtrlForm 中，而 GMPix...">GCtrlPixmap</a>  <a class="el" href="class_g_ctrl_text.html" title="文字元素； GCtrlText 与 GMText 的区别在于： GCtrlText 会主动将自己添加到 GCtrlForm 中，而 GMText 则没有；因此开发者可以直接在 GCtrlForm 中使用...">GCtrlText</a>  <a class="el" href="class_g_ctrl_scroll_text.html" title="滚动字幕； GCtrlScrollText 与 GMScrollText 的区别在于： GCtrlScrollText 会主动将自己添加到 GCtrlForm 中，而 GMScrollText 则没有；...">GCtrlScrollText</a>  <a class="el" href="class_g_m_item.html" title="所有界面元素的基类 ">GMItem</a>  <a class="el" href="class_g_m_ctrl_item.html" title="可以接收输入事件的界面元素的基类 ">GMCtrlItem</a> <br/>
 <a class="el" href="class_g_m_container_item.html" title="所有容器元素的基类；一个容器元素可以包含任意数目的 GMItem 对象 ">GMContainerItem</a>  <a class="el" href="class_g_m_pixmap.html" title="图片元素（原样显示，不会自动缩放到用户所设置的尺寸大小）； GCtrlPixmap 与 GMPixmap 的区别在于： GCtrlPixmap 会主动将自己添加到 GCtrlForm 中，而 GMPix...">GMPixmap</a>  <a class="el" href="class_g_m_image.html" title="图片元素（能够自动缩放到用户所设置的尺寸大小）； GCtrlImage 与 GMImage 的区别在于： GCtrlImage 会主动将自己添加到 GCtrlForm 中，而 GMImage 则没有；因...">GMImage</a>  <a class="el" href="class_g_m_text.html" title="文字元素； GCtrlText 与 GMText 的区别在于： GCtrlText 会主动将自己添加到 GCtrlForm 中，而 GMText 则没有；因此开发者可以直接在 GCtrlForm 中使用...">GMText</a>  <a class="el" href="class_g_m_scroll_text.html" title="滚动字幕； GCtrlScrollText 与 GMScrollText 的区别在于： GCtrlScrollText 会主动将自己添加到 GCtrlForm 中，而 GMScrollText 则没有；...">GMScrollText</a> 
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_gdi"></a>
GDI API及字体和图片处理</h2>
<pre>Giveda®嵌入式中间件包含了一个非常优秀的裁剪系统，支持文件级和函数级的裁剪。如果您的MCU硬件配置非常之低，那么，
您可以选择将其它模块裁剪掉，只保留GDI这一块，以适应您的MCU硬件配置。只保留GDI这一块的话，初步预估需要几KB到
几十KB的RAM和ROM，CPU频率几十MHz。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_brush.html" title="画刷，用于在绘制时指定填充风格。默认、和最常见的就是实心填充风格 SolidPattern （能够实现实心填充） ">GBrush</a>  <a class="el" href="class_g_color.html" title="颜色、像素， GColor 提供了对ARGB8888格式像素的封装 ">GColor</a>  <a class="el" href="class_g_font.html" title="字体、字号等信息。 ">GFont</a>  <a class="el" href="class_g_font_metrics.html" title="GFontMetrics 使用 GFont 来获取文本的显示宽高 ">GFontMetrics</a>  <a class="el" href="class_g_image.html" title="图片 ">GImage</a>  <a class="el" href="class_g_paint_device.html" title="可绘制对象的基类 ">GPaintDevice</a>  <a class="el" href="class_g_painter.html" title="提供GDI接口、较底层的绘制接口。开发者使用 GPainter::instance() 来获取 GPainter 对象。相关接口可以参考 Qt 文档 ">GPainter</a>  <a class="el" href="class_g_point.html" title="GPoint 代表二维平面中的一个点。对二维平面上的一个点进行各种数学运算。 ">GPoint</a>  <a class="el" href="class_g_rect.html" title="GRect 代表二维平面中的一个矩形区域。对二维平面上的一个矩形区域进行各种数学运算。 ">GRect</a> <br/>
 <a class="el" href="class_g_region.html" title="GRegion 代表二维平面中的一个区域（由若干个矩形区域组成）。对二维平面上的区域进行各种数学运算。 ">GRegion</a>  <a class="el" href="class_g_size.html" title="GSize 尺寸大小。对二维平面上的尺寸大小进行各种数学运算。 ">GSize</a> 
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_gdiDriver"></a>
显卡和屏幕驱动</h2>
<pre>Giveda®嵌入式中间件可以灵活适配各种显卡和硬件屏幕驱动。
此模块暂无文档。
</pre><h2><a class="anchor" id="modules_subsect_eventLoop"></a>
事件及事件处理系统</h2>
<pre>Giveda®嵌入式中间件包含了一个支持函数级裁剪的事件及事件处理系统
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_event.html" title="GEvent 是所有事件的基类 ">GEvent</a>  GInputHandler  <a class="el" href="class_g_u_i_evt_loop.html" title="通常情况下，GUI程序都是由事件驱动的、需要有一个事件循环。 GUIEvtLoop 为GUI程序提供了一个事件循环。 GUIEvtLoop 管理着GUI程序的执行流程、负责GUI程序在总体上、全局上的基...">GUIEvtLoop</a>  <a class="el" href="class_g_mouse_event.html" title="GMouseEvent 鼠标事件 ">GMouseEvent</a>  <a class="el" href="class_g_key_event.html" title="GKeyEvent 键盘事件 ">GKeyEvent</a>  <a class="el" href="class_g_paint_event.html" title="GPaintEvent 绘制事件 ">GPaintEvent</a>  <a class="el" href="class_g_tap_event.html" title="GTapEvent 触摸点击事件 ">GTapEvent</a> <br/>
 <a class="el" href="class_g_swipe_event.html" title="GSwipeEvent 触摸滑动事件 ">GSwipeEvent</a>  <a class="el" href="class_g_gesture_scroll_event.html" title="GGestureScrollEvent 触摸拖动事件 ">GGestureScrollEvent</a> 
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_objectSys"></a>
对象管理系统</h2>
<pre>使Giveda®嵌入式中间件区别于其它同类框架的关键一点是，Giveda®嵌入式中间件使用了Giveda®信号槽。
利用“Giveda®信号槽”，开发者在不依赖ANSI c++之外的任何机制和工具的前提下，即可实现对象之间的解耦合。
“Giveda®信号槽”支持ANSI c++并向后兼容（支持ANSI c++及其后续所有c++标准；ANSI c++即ISO c++98）。
可以自豪地讲，“Giveda®信号槽”支持市面上所有的c++编译器。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_object.html" title="GObject 几乎是这个世界中所有元素的基类和祖先。 ">GObject</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_tcpIp"></a>
人性化的tcp/udp API</h2>
<pre>Giveda®嵌入式中间件不仅仅是一个图形库，它还为你提供了非常友好易用的、人性化的tcp/udp方面的API接口。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_tcp_server.html" title="GTcpServer TCP server端 ">GTcpServer</a>  <a class="el" href="class_g_tcp_socket.html" title="GTcpSocket TCP client端 ">GTcpSocket</a>  <a class="el" href="class_g_udp_socket.html" title="GUdpSocket UDP socket. ">GUdpSocket</a>
<pre></pre></dd></dl>
</pre> <h2><a class="anchor" id="modules_subsect_bluetooth"></a>
人性化的bluetooth API</h2>
<pre>Giveda®嵌入式中间件不仅仅是一个图形库，它还为你提供了非常友好易用的、人性化的bluetooth方面的API接口。
(此模块文档暂不公开)</pre><pre><pre></pre></pre><pre><pre></pre> </pre><h2><a class="anchor" id="modules_subsect_utils"></a>
其它常用工具类</h2>
<pre>Giveda®嵌入式中间件不仅仅是一个图形库，它还为你提供了非常友好易用的、人性化的工具API接口。
</p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="class_g_map.html" title="GMap Map数据结构 ">GMap</a> <a class="el" href="class_g_ptr_list.html" title="非常便于使用的指针列表 ">GPtrList</a>  <a class="el" href="class_g_reg_exp.html" title="GRegExp 正则表达式运算 ">GRegExp</a>  <a class="el" href="class_g_r_w_lock.html" title="GRWLock 线程锁。可用于多线程场景下，对临界资源进行加锁保护 ">GRWLock</a>  <a class="el" href="class_g_shared_data.html">GSharedData</a>  <a class="el" href="class_g_string.html" title="GString 字符串操作。对字符串进行各种运算处理。 ">GString</a>  <a class="el" href="class_g_timer.html" title="GTimer 定时器 ">GTimer</a> 
<pre></pre></dd></dl>
</pre> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
生成于 2020年 五月 12日 星期二 22:42:21 , 为 Giveda® Embedded Midware使用  &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
